#pragma once

#include "../Math/Vector2.h"

class CFastICANeuron
{
public:
	enum ACTIVE_FUNCTION_TYPE : int
	{
		TANH = 1,
		EXP  = 2
	};

public:
	CFastICANeuron() = delete;

	CFastICANeuron(int dimension, ACTIVE_FUNCTION_TYPE type);

public:
	virtual double Execute(const Vector2 & Input);

	void SetW(const Vector2 & wd);

	const Vector2 & GetW();

	ACTIVE_FUNCTION_TYPE GetActiveType();

protected:
	Vector2  m_W;

	ACTIVE_FUNCTION_TYPE m_ActiveFuncType;
};